/*! \file Matrix4x4.h
 *	\brief <write description for Matrix4x4.h>
 *
 *	created:	2009/11/24
 *	created:	24:11:2009   15:51
 *	filename: 	o:\gag-engine\libs\math\Matrix4x4.h
 *	file path:	o:\gag-engine\libs\math
 *	file base:	Matrix4x4
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _MATH_MATRIX4X4_H_
#define _MATH_MATRIX4X4_H_

#pragma once

#include <core/types.h>

namespace tt{
namespace math{

template<typename Ty>
class Matrix4x4
{
public:
	typedef Ty value_type;

public:
	Matrix4x4();
	Matrix4x4(value_type diagonal);
	~Matrix4x4();

private:
	value_type m_e11, m_e12, m_e13, m_e14;
	value_type m_e21, m_e22, m_e23, m_e24;
	value_type m_e31, m_e32, m_e33, m_e34;
	value_type m_e41, m_e42, m_e43, m_e44;
};

typedef Matrix4x4<Int> Matrix4x4I;
typedef Matrix4x4<Float> Matrix4x4F;
typedef Matrix4x4<Double> Matrix4x4D;

} //namespace math
} //namespace tt
#include "Matrix4x4.inl"

#endif //_MATH_MATRIX4X4_H_